home *** CD-ROM | disk | FTP | other *** search
- /* GadTools layout toolkit
- **
- ** Copyright © 1993-1995 by Olaf `Olsen' Barthel
- ** Freely distributable.
- **
- ** :ts=4
- */
-
- #include "gtlayout_global.h"
-
- #ifdef DO_MENUS
-
- /* LTP_FillSub(struct MenuItem *Item):
- *
- * Fill in the submenu item IDs.
- */
-
- VOID __regargs
- LTP_FillSub(ULONG MenuID,ULONG ItemID,struct MenuItem *Item)
- {
- ULONG Count = 0;
- ItemNode *Node;
- struct MenuItem *First = Item;
-
- do
- {
- Node = (ItemNode *)((ULONG)Item - sizeof(struct MinNode));
-
- Node -> MenuCode = FULLMENUNUM(MenuID,ItemID,Count);
-
- if(Item -> MutualExclude && (Item -> Flags & CHECKED))
- {
- struct MenuItem *This = First;
- ULONG Exclude = Item -> MutualExclude;
- UWORD i;
-
- for(i = 0 ; i < 32 && This ; i++, This = This -> NextItem)
- {
- if(This != Item && (This -> Flags & CHECKIT) && (Exclude & (1L << i)))
- This -> Flags &= ~CHECKED;
- }
- }
-
- Count++;
- }
- while(Item = Item -> NextItem);
- }
-
- /* FillItem(struct MenuItem *Item):
- *
- * Fill in the menu item IDs.
- */
-
- VOID __regargs
- LTP_FillItem(ULONG MenuID,struct MenuItem *Item)
- {
- ULONG Count = 0;
- ItemNode *Node;
- struct MenuItem *First = Item;
-
- do
- {
- Node = (ItemNode *)((ULONG)Item - sizeof(struct MinNode));
-
- Node -> MenuCode = FULLMENUNUM(MenuID,Count,NOSUB);
-
- if(Item -> SubItem)
- LTP_FillSub(MenuID,Count,Item -> SubItem);
-
- if(Item -> MutualExclude && (Item -> Flags & CHECKED))
- {
- struct MenuItem *This = First;
- ULONG Exclude = Item -> MutualExclude;
- UWORD i;
-
- for(i = 0 ; i < 32 && This ; i++, This = This -> NextItem)
- {
- if(This != Item && (This -> Flags & CHECKIT) && (Exclude & (1L << i)))
- This -> Flags &= ~CHECKED;
- }
- }
-
- Count++;
- }
- while(Item = Item -> NextItem);
- }
-
- /* LTP_FillMenu(struct Menu *Menu):
- *
- * Fill in the menu IDs.
- */
-
- VOID __regargs
- LTP_FillMenu(struct Menu *Menu)
- {
- ULONG Count = 0;
- MenuNode *Node;
-
- do
- {
- Node = (MenuNode *)((ULONG)Menu - sizeof(struct MinNode));
-
- Node -> MenuCode = FULLMENUNUM(Count,NOITEM,NOSUB);
-
- if(Menu -> FirstItem)
- LTP_FillItem(Count,Menu -> FirstItem);
-
- Count++;
- }
- while(Menu = Menu -> NextMenu);
- }
-
- #endif /* DO_MENUS */
-